package pe.edu.sisclas.model.dao.impl;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import pe.edu.sisclas.model.dao.ComentarioDao;
import pe.edu.sisclas.model.dao.exception.DaoException;
import pe.edu.sisclas.model.domain.Comentario;
import pe.edu.sisclas.model.domain.Incidencia;

@Repository
public class ComentarioDaoImpl implements ComentarioDao {

	@Autowired
	private SessionFactory sessionFactory;

	@Override
	public void save(Comentario comentario) throws DaoException {
		try {
			Session session = getSessionFactory().getCurrentSession();
			session.save(comentario);
		} catch (Exception e) {
			throw DaoException.mensaje("Error en la base de datos.");
		}
	}

	public SessionFactory getSessionFactory() {
		return sessionFactory;
	}

	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Comentario> getComentariosByIncidencia(Incidencia incidencia)
			throws DaoException {
		try {
			List<Comentario> comentarios = null;
			Session session = getSessionFactory().getCurrentSession();
			comentarios = session
					.createQuery(
							"from Comentario c where c.incidencia = "
									+ ":incidencia")
					.setParameter("incidencia", incidencia).list();
			return comentarios;
		} catch (Exception e) {
			e.printStackTrace();
			throw DaoException.mensaje("Error en la base de datos.");
		}
	}

}
